<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>

    // 增：默认
    // document.cookie = "a=10";
    
    // 增：有路径
    // document.cookie = "b=20;path=/"
    
    // 增：有有效期
    // const d = new Date();
    // d.setDate(d.getDate()+1);
    // document.cookie = "c=30;expires="+d
    
    // 增：有路径有有效期
    // const d = new Date();
    // d.setDate(d.getDate()+3);
    // document.cookie = "d=40;path=/;expires="+d
    
    // 改：
    // document.cookie="msg=hello"
    // document.cookie="msg=123;path=/"
    
    // 删：
    // const d = new Date();
    // d.setDate(d.getDate()-1);
    // document.cookie = "d=40;path=/;expires="+d
    
    // 查cookie
    // console.log(document.cookie);
    
    

    const cookie = {
        setItem(key, value, ops={}){
            // 根据是否传入path，决定是否有path配置
            let p = "";
            if(ops.path){
                p = ";path=" + ops.path;
            }
            // 根据是否传入expires，决定是否有expires配置
            let d = "";
            if(ops.expires){
                const date = new Date();
                date.setDate( date.getDate() + ops.expires );
                d = ";expires=" + date;
            }
            // 通过字符串拼接，拼接出cookie字符，并设置
            document.cookie = `${key}=${value}${p}${d}`;
        },
        removeItem(key, ops={}){
            // 确保ops必然为对象的前提下，添加expires:-1属性
            ops.expires = -1;
            // 借助设置（修改）功能，将有效期设置为过去的日期
            this.setItem(key, "", ops);
        },
        getItem(key){
            // 将每组cookie分割开来
            const arr = document.cookie.split("; ");
            // 遍历
            for(let i=0;i<arr.length;i++){
                // 再次将cookie的名和值，分割开来
                const a = arr[i].split("=");
                // 判断名字是否相符
                if(a[0] === key){
                    // 返回对应的值
                    return a[1];
                }
            }
            return null;
        }
    }
    // cookie.setItem("a",10)
    // cookie.setItem("b",20,{path:"/"})
    // cookie.setItem("c",30,{expires:1})
    // cookie.setItem("d",40,{expires:1,path:"/"})

    // cookie.removeItem("a")
    // cookie.removeItem("d",{path:"/"})

    console.log(cookie.getItem("a"));
    console.log(cookie.getItem("b"));
    console.log(cookie.getItem("c"));
    console.log(cookie.getItem("d"));
    console.log(cookie.getItem("e"));
    

</script>
</html>